Skip to content

chore(deps): upgrade to AGP 9 / Kotlin 2.3 / Compose BOM 2026.03#29

Merged
Xitee1 merged 3 commits into
mainfrom
chore/deps-upgrade-agp9
Apr 19, 2026
Merged

chore(deps): upgrade to AGP 9 / Kotlin 2.3 / Compose BOM 2026.03#29
Xitee1 merged 3 commits into
mainfrom
chore/deps-upgrade-agp9

Conversation

@Xitee1
Copy link
Copy Markdown
Owner

@Xitee1 Xitee1 commented Apr 18, 2026

Summary

  • Sync the dependency set forward ~15 months; adopt AGP 9, Kotlin 2.3, Compose BOM 2026.03, Material3 1.4, Lifecycle 2.10, Navigation 2.9, DataStore 1.2, Activity 1.13; bump compileSdk/targetSdk to 36.
  • Perform the AGP 9 structural migration: drop the kotlin-android plugin (Kotlin is now built in) and remove the android.kotlinOptions DSL.
  • Migrate hiltViewModel() (4 call sites) to the new androidx.hilt:hilt-lifecycle-viewmodel-compose artifact required by Hilt Nav Compose 1.3.0.
  • Opt in to the upcoming Kotlin annotation-default-target behaviour (-Xannotation-default-target=param-property) to resolve KT-73255 warnings on @Inject / @StringRes constructor params.

Test plan

  • ./gradlew assembleDebug — green, zero warnings
  • Install + launch on emulator-5554 — app starts, MainActivity renders
  • Timer core: start / dial-set / pause / resume / cancel / run-to-completion (screen-lock fires)
  • Foreground service: notification appears, remaining-time updates, tap returns to app, survives device lock
  • Rotation: Settings rotates portrait/landscape without dial/endet overlap; Timer stays portrait; rotation mid-run preserves state
  • Persistence: change settings → kill app → relaunch → values retained (DataStore 1.1 → 1.2 wire check)
  • Theme picker: cycle each theme, confirm gradient rendering in Timer screen
  • Navigation: Settings → ThemePicker → back; Settings → About → back; system-back on every screen
  • Edge-to-edge: status-bar colour holds through rotation and system dark-mode toggle (Activity 1.13 re-invokes EdgeToEdge on config changes)
  • Shizuku flow: install/uninstall detection, permission request round-trip
  • Clean install on Android 14+: POST_NOTIFICATIONS prompt appears on first timer start (targetSdk 36)

🤖 Generated with Claude Code

Xitee1 and others added 3 commits April 19, 2026 00:16
Bring the whole dependency set forward ~15 months:

- AGP 8.7.3 → 9.1.1 (requires Gradle 9.3+, compileSdk 36+)
- Gradle wrapper 8.10.2 → 9.4.1
- Kotlin 2.1.0 → 2.3.20, KSP 2.1.0-1.0.29 → 2.3.6
- Hilt 2.53.1 → 2.59.2
- Compose BOM 2024.12.01 → 2026.03.01 (Material3 1.4.0)
- Lifecycle 2.8.7 → 2.10.0, Navigation 2.8.5 → 2.9.7
- Activity Compose 1.9.3 → 1.13.0, Core KTX 1.15.0 → 1.18.0
- DataStore 1.1.1 → 1.2.1
- kotlinx-serialization 1.7.3 → 1.11.0
- compileSdk / targetSdk 35 → 36

AGP 9 structural changes:
- Remove org.jetbrains.kotlin.android plugin (built in to AGP 9)
- Drop android.kotlinOptions DSL (no longer available); JVM target
  flows from compileOptions

Hilt Nav Compose 1.3.0: hiltViewModel() moved to a dedicated artifact
without a transitive navigation dependency. Swap the four call sites to
androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel and add the new
hilt-lifecycle-viewmodel-compose dependency to :app and :feature:timer.

Opt in to the upcoming Kotlin annotation-default-target behaviour via
-Xannotation-default-target=param-property in all Android modules,
silencing KT-73255 warnings on @Inject / @stringres constructor params.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…rceValueCall

Compose UI 1.10 promoted this check from hint to error: calling
Context.getString() from inside a Composable does not invalidate on
configuration changes, so stale translations can leak. Move the five
affected lookups (screen admin description + three Shizuku feature
labels + soft-screen-off explanation) to stringResource() at the
composable scope and capture the resulting Strings in the surrounding
lambdas.

SettingsScreen no longer needs LocalContext.current; drop the val and
its import.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@Xitee1 Xitee1 merged commit 90800c9 into main Apr 19, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant